將日期轉成字串是為了可讀性,但將字串轉為日期是為了日期的運算,這邊會介紹一些關於日期的轉換應用
- 日期轉成字串:TO_CHAR(date, ‘format_model’)
- 字串轉為日期:TO_DATE(CHAR[,format_model’])
規則
- 格式必須使用單引號括起來
- 大小寫有差別
- 元素間要用分割號隔開
- 輸出日期月份會自動用空格填補,如果要去除前面可以加fm,移除前面的前導0
空值轉換函數
當資料欄是空值時他會有三種可能
- 不知道他的值
- 未指派
- 沒有值
在SQL中空值等於無限大,所以需要經過運算才可以
- NVL(expr1,expr2):將expr1空值轉換成expr2
ex NVL(hire_date,‘03-May-2025’)
如果hire_date是空值則回傳03-May-2025
- NVL2(expr1,expr2,expr3):如果expr1不等於空值則返回expr2;如果expr1等於空值則回傳expr3
- NULLIF(expr1,expr2):如果expr1等於expr2返回空值 如果expr1不等於expr2則返回expr1
- COALESCE(expr1,expr2,expr3,….expr n):返回印數第一個非空值的引數
若…則…否則..
SELECT可以用「CASE表達式」或「DECODE函數」來表達程式語言相似的「若…則…否則」
SELECT 欄位[,…],CASE 表達式 WHEN 比較式1 THEN返回值1
[ WHEN 比較式2 THEN返回值2
WHEN 比較式N THEN返回值N
ELSE 預設返回值]
END
FROM 表格
[WHERE…條件]
[ORDER BY 欄位]
- CASE前面必須加逗號
- CASE後面expr可為欄位或表達式
- 各比較式條件直接寫比較式,不再寫欄位名稱
- 返回值可為欄位或表達式
- END後面可以加字串當作別名
SELECT 欄位[, 欄位,…],DECODE (expr 比較條件1, 返回值1
[,比較條件2, 返回值2
,比較條件N,返回值N]
[,預設返回值]
FROM 表格
[WHERE…條件]
[ORDER BY 欄位]
- DECODE內建expr可為欄位或表達式
- 比較條件直接寫比較值 不再寫欄位名稱
- 返回可為欄位或表達式鞥DECODE函數後面可以加上字串當結果別名